/**
 * Created by kedong on 2016/5/30.
 */
/**
 * 全局变量配置、工具方法
 */
var YQ = {
    // 正式
    //resource: "http://youqu-fiberhome.oss-cn-hangzhou.aliyuncs.com/",
    //url: "http://iyouqu.com.cn:8080/app/order/service.do",

    // 测试
    resource: "http://youqu-fiberhome-test.oss-cn-hangzhou.aliyuncs.com/",
    url: "http://test.iyouqu.com.cn:8080/app/order/service.do",

    // 主要用于控制日志的输出，方便开发调试
    debug: true,
    // 输出日志
    log: {
        debug: function (msg) {
            this.debug && console.log(msg);
        },
        info: function (msg) {
            this.debug && console.info(msg);
        },
        error: function (msg) {
            console.error(msg);
        }
    },
    // 判断
    isDOM: function (obj) {
        return ( typeof HTMLElement === 'object' ) ? obj instanceof HTMLElement
            : obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string'
    },
    // 获取请求地址中的参数
    getQueryString: function (name) {
        var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
        var r = window.location.search.substr(1).match(reg);
        if (r != null) {
            return decodeURIComponent(r[2]);
        }
        return null;
    },
    // 封装异步请求，主要是对返回结果进行类型转换
    ajax: function (option) {
        $.ajax({
                url: option.url,
                type: "POST",
                dataType: "json",
                data: {
                    text: JSON.stringify(option.data)
                },
                success: function (data) {
                    this.log.info(data);
                    switch (Number(data.code)) {
                        case 0:
                            option.success(data.resultMap);
                            break;
                        case 1:
                            break;
                        default:
                            alert("服务器繁忙！");
                            break;
                    }
                }.bind(this),
                error: function (data) {
                    this.log.error(data);
                    if ($.isFunction(option)) {
                        option.error(data);
                    } else {
                        alert("服务器繁忙！")
                    }
                }.bind(this)
            }
        );
    },
    // 判断按钮是否被禁用
    isEnabled: function (btn) {
        return !$(btn).hasClass("disabled");
    },
    // 是否已存在于购物车列表中 主要通过J_action 的 data_goodsId（商品ID）属性来判断
    isExistInCar: function (goodsId) {
        var flag = false;
        $.each($(".J_goods_list_item_cantainer > .row"), function (index, item) {
            if ($(item).find(".J_action").attr("data_goodsId") == goodsId) {
                flag = true;
                return false;
            }
        });
        return flag;
    },
    // 设置用户信息
    setUser: function (obj) {
        var user = JSON.parse(sessionStorage.getItem("user")) || {};
        $.extend(user, obj);
        sessionStorage.setItem("user", JSON.stringify(user));
        return user;
    },
    /**
     * 返回JSON格式的数据
     * @param key
     */
    get: function (key) {
        return JSON.parse(sessionStorage.getItem(key));
    },
    /**
     * 返回字符串类型数据
     * @param key
     */
    getWithOutJson: function (key) {
        return sessionStorage.getItem(key);
    },
    set: function (key, value) {
        sessionStorage.setItem(key, value);
    },
    // 购物车信息
    car: {

        /********************************** 购物车数据结构 start
         baseInfo: {
            msgId: "CREATE_ORDER",
            address: "天朝",
            mealTime: "早中晚",
            totalPrice: 1000,
            orderDetail: []
        }
         orders: {
            3: {
                goodsId: "3",
                name: "鲍鱼",
                amount: 3,
                price: 12
            },
            4: {
                goodsId: "3",
                name: "鲍鱼",
                amount: 3,
                price: 12
            }
        }
         购物车数据结构 end**********************************/
        // 提交订单调接口的时候需要获取的数据
        getAll: function () {
            var base = JSON.parse(sessionStorage.getItem("baseInfo")), orderDetail = [],
                orders = JSON.parse(sessionStorage.getItem("orders"));
            for (var name in orders) {
                orderDetail.push(orders[name]);
            }
            base.orderDetail = orderDetail;
            return base;
        },
        getGoodsById: function (id) {
            var orders = JSON.parse(sessionStorage.getItem("orders"));
            for (var name in orders) {
                if (name == id)
                    return orders[name]
            }
        },
        // 更新基本信息，主要是总价
        updateBaseInfo: function (obj) {
            var base = JSON.parse(sessionStorage.getItem("baseInfo")) || {};
            $.extend(base, obj);
            sessionStorage.setItem("baseInfo", JSON.stringify(base));
        },
        // 增加或者更新商品信息（更新的主要是数量）
        addOrUpdateOrders: function (obj) {
            var orders = JSON.parse(sessionStorage.getItem("orders")) || {};
            if (orders[obj.id]) {
                $.extend(orders[obj.id], obj)
            } else {
                orders[obj.id] = obj
            }
            sessionStorage.setItem("orders", JSON.stringify(orders));
        },
        // 删除某个商品
        delete: function (obj) {
            var orders = JSON.parse(sessionStorage.getItem("orders")) || {};
            if (orders[obj.id]) {
                delete orders[obj.id];
            }
            sessionStorage.setItem("orders", JSON.stringify(orders));
        },
        clear: function () {
            this.delete("orders");
            this.delete("baseInfo");
        }
    }
};